#pragma once
#include<iostream>
#include<vector>
#include<list>
using namespace std;
namespace celia
{
	template<class T,class Container = vector<T>>
	class Mystack
	{
	public:
		void push(const T& data)
		{
			st.push_back(data);
		}
		void pop()
		{
			st.pop_back();
		}
		bool empty() const
		{
			return st.empty();
		}
		T& top()
		{
			return st.back();
		}
	private:
		Container st;
	};

	template<class T, class Container = list<T>>
	class Myqueue
	{
	public:
		void push(const T& data)
		{
			q.push_back(data);
		}
		void pop()
		{
			q.pop_front();
		}
		bool empty() const
		{
			return q.empty();
		}
		T& top()
		{
			return q.front();
		}
	private:
		Container q;
	};
}